#include "customcontrol.h"

// 构造函数
CustomControl::CustomControl(QObject *parent)
    : QObject(parent)
{}

// 静态方法：为 QLineEdit 添加 clicked 信号
void CustomControl::addClickSignal(QLineEdit *lineEdit)
{
    if (!lineEdit)
        return;

    // 检查是否已有事件过滤器
    if (!lineEdit->property("custom_control_added").toBool()) {
        // 创建 CustomControl 实例并设置为 lineEdit 的事件过滤器
        CustomControl *control = new CustomControl(lineEdit);
        lineEdit->installEventFilter(control);

        // 设置标记，防止重复添加
        lineEdit->setProperty("custom_control_added", true);

        // 将 clicked 信号转发给外部
        QObject::connect(control, &CustomControl::clicked, [lineEdit]() {
            emit lineEdit->customContextMenuRequested(QPoint()); // 可扩展到发射自定义信号
        });
    }
}

// 事件过滤器实现
bool CustomControl::eventFilter(QObject *watched, QEvent *event)
{
    // 如果是目标 QLineEdit 且发生鼠标点击事件
    if (watched->isWidgetType() && event->type() == QEvent::MouseButtonPress) {
        QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
        if (mouseEvent->button() == Qt::LeftButton) {
            emit clicked(); // 发射 clicked 信号
            return true;    // 事件已处理
        }
    }
    return QObject::eventFilter(watched, event); // 保持默认处理
}
